home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 25 / CU Amiga Magazine's Super CD-ROM 25 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-08].iso / CUCD / Utilities / Type1Manager / src / type1interface.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-05-22  |  3.0 KB  |  155 lines

  1. /* type1interface.c
  2.  
  3.     Author - Amish S. Dave
  4.  
  5. This file contains interface functions that get called by the
  6. shared library entry points, and calls functions in the type1
  7. sources.
  8.  
  9. */
  10.  
  11. #ifndef T1GST
  12. #include "global.h"
  13. #endif
  14. #include "amishfontrequest.h"
  15. #include <stdio.h>
  16.  
  17. /**
  18.  * DEFINES
  19.  **/
  20. #define DECIPOINTSPERINCH 722.7
  21. #define DEFAULTRES 75
  22. #define DEFAULTPOINTSIZE 120
  23.  
  24.  
  25. /**
  26.  * GLOBAL VARIABLES
  27.  **/
  28. FontScalableRec vals;
  29. FontEntryRec entry;
  30. FontPtr fontptr;
  31. CharInfoPtr glyphs;
  32.  
  33.  
  34. /**
  35.  * PROTOTYPES
  36.  **/
  37. void OpenType1Engine(void);
  38. void CloseType1Engine(void);
  39. unsigned long ReadType1Font(FONTREQUEST *fontreq_p);
  40. struct GlyphMap *GetType1GlyphMap(unsigned long GlyphCode);
  41. void CloseType1Font(void);
  42. int MyQueryFontLib(char *filename, char *env, pointer dest);
  43. unsigned long SetTransformType1Font(FONTREQUEST *fontreq_p);
  44.  
  45.  
  46. /**
  47.  *    Create memory pool
  48.  **/
  49. void OpenType1Engine(void)
  50. {
  51.     addmemory2(100000);
  52.     fontptr = NULL;
  53. }
  54.  
  55. /**
  56.  * Free memory, cleanup, etc.
  57.  **/
  58. void CloseType1Engine(void)
  59. {
  60.     extern psfont *FontP;
  61.  
  62.     free_vm();
  63.     FontP = NULL;
  64.     MyType1CloseFont(fontptr);
  65.     delmemory2();
  66. }
  67.  
  68.  
  69. /* return 0 on success */
  70. unsigned long ReadType1Font(FONTREQUEST *fontreq_p)
  71. {
  72.     int rc;
  73.  
  74.     vals.x = fontreq_p->DeviceXDPI;
  75.     vals.y = fontreq_p->DeviceYDPI;
  76.     vals.point = fontreq_p->PointHeight * 10;
  77.     vals.pixel = (vals.point * vals.y) / DECIPOINTSPERINCH;
  78.     vals.pixel_set = (fontreq_p->PointSet != 0) ? ((fontreq_p->PointSet * 10 * vals.x) / DECIPOINTSPERINCH) : vals.pixel;
  79.     vals.pixel_matrix[0] = vals.pixel_matrix[3] = vals.pixel;
  80.     vals.ShearSin = fontreq_p->ShearSin;
  81.     vals.ShearCos = fontreq_p->ShearCos;
  82.     vals.RotateSin = fontreq_p->RotateSin;
  83.     vals.RotateCos = fontreq_p->RotateCos;
  84.  
  85.     rc = MyType1OpenScalable(&fontptr, fontreq_p->FontFileName, &vals);
  86.  
  87.     if (rc != Successful)
  88.         return -1;
  89.     else
  90.         return 0;
  91. }
  92.  
  93.  
  94. unsigned long SetTransformType1Font(FONTREQUEST *fontreq_p)
  95. {
  96.     int rc;
  97.  
  98.     vals.x = fontreq_p->DeviceXDPI;
  99.     vals.y = fontreq_p->DeviceYDPI;
  100.     vals.point = fontreq_p->PointHeight * 10;
  101.     vals.pixel = (vals.point * vals.y) / DECIPOINTSPERINCH;
  102.     vals.pixel_set = (fontreq_p->PointSet != 0) ? ((fontreq_p->PointSet * 10 * vals.x) / DECIPOINTSPERINCH) : vals.pixel;
  103.     vals.pixel_matrix[0] = vals.pixel_matrix[3] = vals.pixel;
  104.     vals.ShearSin = fontreq_p->ShearSin;
  105.     vals.ShearCos = fontreq_p->ShearCos;
  106.     vals.RotateSin = fontreq_p->RotateSin;
  107.     vals.RotateCos = fontreq_p->RotateCos;
  108.  
  109.     rc = MyType1SetTransform(fontptr, &vals);
  110.  
  111.     if (rc != Successful)
  112.         return -1;
  113.     else
  114.         return 0;
  115. }
  116.  
  117.  
  118. /* return NULL on failure, struct GlyphMap * on success */
  119. struct GlyphMap *GetType1GlyphMap(unsigned long GlyphCode)
  120. {
  121.     int rc;
  122.  
  123.     if (GlyphCode >= 256)
  124.         return NULL;
  125.  
  126.     rc = MyType1GetGlyphs(fontptr, GlyphCode, &glyphs);
  127.  
  128. //if ((glyphs == NULL) && (rc == Successful)) kprintf("NULL glyph returned!\n");
  129.  
  130.     if ((rc != Successful) || (glyphs == NULL))
  131.         return NULL;
  132.     else
  133.         return glyphs->glyphmap;
  134. }
  135.  
  136.  
  137. void CloseType1Font(void)
  138. {
  139.     return;
  140. }
  141.  
  142.  
  143. int MyQueryFontLib(char *filename, char *env, pointer dest)
  144. {
  145.     int rc;
  146.  
  147.     QueryFontLib(filename, env, dest, &rc);
  148.     return rc;
  149. }
  150.  
  151. void FatalError(char *line)
  152. {
  153. //    puts(line);
  154. }
  155.